package com.idroc.coelacanth.locate;

import java.util.Map;

/**
 * 服务定位器
 * @author yuyoo (yuyoo4j@163.com)
 * @date Dec 10, 2009 10:01:26 PM
 */
public interface ServiceLocator {
	
	/**
	 * 没有使用策略代码
	 */
	static final int NULL_STRATEGY_CODE = 0;

	/**
	 * 设置定位器hash算法
	 * @param hash -- hash算法
	 */
	void setHashAlgorithm(final HashAlgorithm hash);
	
	/**
	 * 设置定位器查找的服务集合
	 * @param services -- 服务集合
	 */
	void setNodes(final Map<Integer, Object> services);
	
	/**
	 * 使用key查找服务
	 * @param key -- key 
	 * @param strategyCode -- 策略代码
	 * @return -- 服务
	 */
	Object lookup(final String key, final int strategyCode);
}
